#pragma once

#include "ISingleton.h"
#include "Sol9Types.h"
#include <windows.h>

namespace sol9
{
namespace util
{

	class Timer;

	typedef std::list<Timer*> TimerList;
	typedef TimerList::iterator TimerIterator;

	class TimeManager
	{
	private:
		static LONGLONG s_nFrequency;
		static LONGLONG s_nPrevTime;
		static TimerList s_listTimers;

		friend Timer;

	public:
		static bool initialize();
		static void tickTimers();

		static LONGLONG getTime64();
		static u32 getTime32();
		static u32 getTick();
	};

} // namespace util
} // namespace sol9